package com.example.module.goods.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.module.goods.DO.*;
import com.example.module.goods.form.*;
import com.example.module.goods.vo.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

/**
 * @author ghy
 * @date 2025/08/08
 * @description 商品Mapper
 */
@Mapper
@Repository
public interface GoodsMapper {
    /*
     * 新增商品
     *
     * @param GoodsAddDO
     * return void
     * */
    public void addGoods(@Param("form") GoodsAddDO goodsAddDO);

    /*
     * 查询商品类型
     * 根据商品类型Id准确查询
     * */
    public GetGoodsTypeByGoodsTypeIdDO getGoodsTypeByGoodsTypeId(Long goodsTypeId);

    /*
     * 删除商品
     * 根据商品Id准确删除
     *
     * @param goodsDeleteByIdForm
     * return void
     * */
    public void deleteGoodsById(GoodsDeleteByIdForm goodsDeleteByIdForm);

    /*
     * 更新商品
     *
     * @param goodsUpdateForm
     * return void
     * */
    public void updateGoods(@Param("form") GoodsUpdateForm goodsUpdateForm);

    /*
     * 查询商品
     * 根据商品Id准确查询
     * 根据商品类型准确查询
     * 根据用户Id准确查询
     * 根据商品名称模糊查询
     * 根据商品价格模糊查询
     * 根据商品上架时间模糊查询
     * 根据商品状态准确查询
     *
     * @param getGoodsForm
     * return List<GetGoodsVO>
     * */
    public List<GetGoodsVO> getGoods(GetGoodsForm getGoodsForm);

    /*
     * 条件分页查询商品
     * 根据商品Id准确查询
     * 根据商品类型准确查询
     * 根据用户Id准确查询
     * 根据商品名称模糊查询
     * 根据商品价格模糊查询
     * 根据商品上架时间模糊查询
     * 根据商品状态准确查询
     *
     * @param page
     * @param getGoodsForm
     * return Page<GetGoodsVO>
     * */
    public Page<GetGoodsVO> getGoodsByPage(Page<GetGoodsVO> page, @Param("form") GetGoodsForm getGoodsForm);
}
